import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
// 获取本地数据
let userInfo = JSON.parse(localStorage.getItem('userInfo')) || {}

export default new Vuex.Store({
  // 类似组件中的data，初始化数据、保存数据
  state: {
    userInfo: userInfo
  },
  // 类似组件中的计算属性
  getters: {
    myMenus(state) {
      // 当前用户的菜单
      return state.userInfo.menus || []
    }
  },
  // 修改数据，类似组件的methods，都是同步的
  mutations: {
    // 保存用户信息
    saveUserInfo(state, payload) {
      state.userInfo = payload;
      // 本地存储
      localStorage.setItem('userInfo', JSON.stringify(payload))
    },
    // 清除用户信息
    clearUserInfo(state) {
      state.userInfo = {}
      // 本地存储
      localStorage.removeItem('userInfo')
    }
  },
  // 修改数据，类似组件的methods，可以有异步操作
  actions: {
    // action = axios + mutation
  },
  // 模块化，适用于特别复杂的场景，根据业务拆分代码
  modules: {
  }
})
